package com.erp.erp_servers.warehouse.imp;

import com.erp.erp_dao.warehouse.IResourceSamplesDetailDao;
import com.erp.erp_entitys.warehouse.entity.ResourceSamplesDetailEntity;
import com.erp.erp_entitys.warehouse.req.*;
import com.erp.erp_entitys.warehouse.rsp.ImportPurchaseSampleProductRsp;
import com.erp.erp_entitys.warehouse.rsp.ImportPurchaseSampleRsp;
import com.erp.erp_entitys.warehouse.req.ImportResourceSamplesProductReq;
import com.erp.erp_entitys.warehouse.req.InventoryDetailStatisticsReq;
import com.erp.erp_entitys.warehouse.req.ResourceSamplesStockListReq;
import com.erp.erp_entitys.warehouse.rsp.InventoryDetailStatisticsRsp;
import com.erp.erp_entitys.warehouse.rsp.ResourceSamplesStockListRsp;
import com.erp.erp_servers.warehouse.IResourceSamplesDetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.List;

/**
 * @ClassName : ResourceSamplesDetailServiceImp
 * @Description : 资源样品明细实现类
 * @Author : lst
 * @Date: 2020-11-28 16:04
 */
@Service
public class ResourceSamplesDetailServiceImp implements IResourceSamplesDetailService {

    /**
     * 注入资源样品mapper
     */
    private final IResourceSamplesDetailDao resourceSamplesDetailDao;

    @Autowired
    public ResourceSamplesDetailServiceImp(IResourceSamplesDetailDao resourceSamplesDetailDao) {
        this.resourceSamplesDetailDao = resourceSamplesDetailDao;
    }


    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    @Override
    public ResourceSamplesDetailEntity queryById(Integer id) {
        return resourceSamplesDetailDao.queryById(id);
    }

    /**
     * 通过实体作为筛选条件查询
     *
     * @param resourceSamplesDetail 实例对象
     * @return 对象列表
     */
    @Override
    public List<ResourceSamplesDetailEntity> queryAll(ResourceSamplesDetailEntity resourceSamplesDetail) {
        return resourceSamplesDetailDao.queryAll(resourceSamplesDetail);
    }

    /**
     * 通过id批量查询
     * @param ids 登记id
     * @return 登记集合
     */
    @Override
    public List<ResourceSamplesDetailEntity> getResourceSamplesDetailByIds(List<String> ids) {
        return resourceSamplesDetailDao.getResourceSamplesDetailByIds(ids);
    }

    /**
     * 获取同一批资源样品数据（产品编码、规格编码、货号、批次、仓库、单价 如果都相同 则为同一组）
     * @param req 查询条件
     * @return 查询结果
     */
    @Override
    public BigDecimal getTheSameResourceSamplesInfo(TheSameResourceSamplesInfoReq req) {
        return resourceSamplesDetailDao.getTheSameResourceSamplesInfo(req);
    }

    /**
     * 新增数据
     *
     * @param resourceSamplesDetail 实例对象
     * @return 影响行数
     */
    @Override
    public int insert(ResourceSamplesDetailEntity resourceSamplesDetail) {
        return resourceSamplesDetailDao.insert(resourceSamplesDetail);
    }

    /**
     * 详情批量新增
     * @param list 新增对象集合
     * @return 影响行数
     */
    @Override
    public int addList(List<ResourceSamplesDetailEntity> list) {
        return resourceSamplesDetailDao.addList(list);
    }

    /**
     * 修改数据
     *
     * @param resourceSamplesDetail 实例对象
     * @return 影响行数
     */
    @Override
    public int update(ResourceSamplesDetailEntity resourceSamplesDetail) {
        return resourceSamplesDetailDao.update(resourceSamplesDetail);
    }


    /**
     * 获取源样品产品明细
     * @param req 查询参数
     * @return 源样品产品明细
     */
    @Override
    public List<ResourceSamplesDetailEntity> getResourceSamplesDetailInfo(ImportResourceSamplesProductReq req) {
        return resourceSamplesDetailDao.getResourceSamplesDetailInfo(req);
    }

    /**
     * 获取资源样品库存信息
     * @param req 查询条件
     * @return 资源样品库存信息
     */
    @Override
    public List<ResourceSamplesStockListRsp> getResourceSamplesStockList(ResourceSamplesStockListReq req) {
        return resourceSamplesDetailDao.getResourceSamplesStockList(req);
    }

    /**
     * 获取采购样品信息
     * @param req 查询条件
     * @return 采购样品信息
     */
    @Override
    public List<ImportPurchaseSampleRsp> getImportPurchaseSampleInfo(ImportPurchaseSampleReq req) {
        return resourceSamplesDetailDao.getImportPurchaseSampleInfo(req);
    }

    /**
     * 通过采购样品主表ID获取对应产品信息
     * @param id 采购样品主表ID
     * @return 采购样品产品信息
     */
    @Override
    public List<ImportPurchaseSampleProductRsp> getPurchaseSampleProductById(Integer id) {
        return resourceSamplesDetailDao.getPurchaseSampleProductById(id);
    }

    /**
     * 获取已做采购样品数量
     * @param req 查询参数
     * @return 已做采购样品数量
     */
    @Override
    public BigDecimal getPurchaseSampleUsedAmount(PurchaseSampleUsedReq req) {
        return resourceSamplesDetailDao.getPurchaseSampleUsedAmount(req);
    }

    /**
     * 获取采购样品数量
     * @param req 查询参数
     * @return 采购样品数量
     */
    @Override
    public BigDecimal getPurchaseSampleAmount(PurchaseSampleUsedReq req) {
        return resourceSamplesDetailDao.getPurchaseSampleAmount(req);
    }

    @Override
    public List<InventoryDetailStatisticsRsp> getInventoryDetailStatisticsReqList(InventoryDetailStatisticsReq req) {
        return resourceSamplesDetailDao.getInventoryDetailStatisticsReqList(req);
    }
}
